package com.itheima.executorService;

import java.util.concurrent.*;

public class ExecutorServiceDemo1 {

    public static void main(String[] args) {

        // 1. 使用ExecutorService接口的实现类ThreadPoolExecutor来创建线程池
        ExecutorService pool = new ThreadPoolExecutor(
                3, // 线程池中核心线程数
                5, // 线程池中允许的最大线程数
                60, // 线程空闲时间
                TimeUnit.SECONDS, // 时间单位 秒
                new ArrayBlockingQueue<Runnable>(3), // 队列
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy() // 拒绝策略 哪一个线程调用了submit方法，哪一个线程来执行
                //new ThreadPoolExecutor.DiscardPolicy() // 拒绝策略 什么也不做
                //new ThreadPoolExecutor.DiscardOldestPolicy() // 拒绝策略 哪一个线程调用了submit方法，哪一个线程来执行
                //new ThreadPoolExecutor.CallerRunsPolicy() // 拒绝策略 哪一个线程调用了submit方法，哪一个线程来执行
                //new ThreadPoolExecutor.AbortPolicy() // 拒绝策略 抛出异常
        );

        // 2. 使用线程池来执行任务
        MyRunable mr = new MyRunable();
        for (int i = 0; i < 10; i++) {
            pool.execute(mr);
        }

    }
}
